[Salesforce]Todoを作成したら任命先ユーザのSlackに通知をする
はじめに
こんにちは、福岡オフィス所属IT推進室の井手です。 今回はSalesforce(以下SF)でTodo作成時に、任命先に通知させたいと要望がありSlack通知を検証したのでご紹介します。
背景
SFでTodoを割り当てた時、やはり割り当てられた方に通知されると嬉しいのではないでしょうか。SFにはメール送信機能が標準でありますが、チャットツールを使用していれば、集約したいという要望は一般的で、弊社内(主に営業事務が営業にTodoに割り当てる時)でも同様の要望がありました。
ゴール
やりたかったことは以下です。個人のTodoがchannelに投稿されると流れてしまうので、Slack Botに投稿しています。
前提
・ Slack バージョン3.3.7 (App Store) ※言語は英語 ・ Salesforce(LEX)
ベースの解決策
co-meetingの木村さんが公開されている以下のパッケージを利用させてもらいました。記事の更新日時やgithubの更新日時が約3年前なので、動くかな?と当初思ったのですが、記事の通りに設定する事で基本的な動作は問題ありませんでした。
Salesforce→Slack通知をオープンソースで公開しました
※「パターン1: フォームから通知」のキャプチャ内でtext項目にメンションしている部分がありますが、当時とはSlack APIの仕様が変わっており、userIDを利用する必要があります。
動的に任命先に通知する
まず結論から、プロセスビルダーの任命先が動的に変わるのでユーザオブジェクトにメンション用項目を作成し、任命先のuserIDを設定する事で宛先を変え実現させます。 今回は通知をSlack Bot宛(DM)に設定したかったので、channelに直接userIDを設定します。
userIDの取得
Slack -> Profile -> Copy member ID から取得できます。
SalesforceのユーザオブジェクトにSlackID項目を作成する
ログイン -> 設定 -> オブジェクトマネージャ -> ユーザオブジェクトにて項目を作成します。
プロセスビルダーの内で設定
プロセスビルダーの設定は参考記事と同じですが、以下のようにchannelを任命先 > SlackIDとします。
まとめ
いかただったでしょうか。
記事内でも触れられていますが、プロセスビルダーを利用する事で応用範囲はとても広い&手軽さを感じています。一方、プロセスビルダーはデバッグやテストが難しい面もあります。こちらのパッケージは未管理パッケージなので既にオブジェクトに複数プロセスビルダーが設定されている場合、ApexからSlack Messageオブジェクトを作成したり、もろもろ拡張しても面白いかもと感じました。